home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / RAMSES 2.2 / RAMSES 2.2 Extras / DMBaseExtra / DMHeapWatch.MOD < prev    next >
Text File  |  1996-06-21  |  3KB  |  95 lines

  1. IMPLEMENTATION MODULE DMHeapWatch ;
  2.  
  3.   (*
  4.  
  5.         Implementation and Revisions:
  6.         ============================
  7.  
  8.         Author  Date        Description
  9.         ------  ----        -----------
  10.  
  11.         af      02/02/90    First implementation (DM 2.0, MacMETH 2.6+)
  12.         af        26/10/90    showLevels added
  13.         af/dg    05/11/90    allocInfoProc, deallocInfoProc added
  14.         af        20/11/90    InstallTermProc now from DMLevels used
  15.         dg        14/02/92    DM V2.2, MacMETH V3.2
  16. --- END OF MODULE HISTORY ---  *)
  17.   
  18.   
  19.   FROM SYSTEM IMPORT ADDRESS;
  20.   FROM DMLevels    IMPORT curDMLevel, startUpLevel, InstallTermProc;
  21.  
  22.   FROM DMDebugHelp IMPORT MessageWindow, WriteString, WriteLn, 
  23.                             WriteInt, Message, lastModuleID;
  24.   
  25.  
  26.  
  27.   VAR 
  28.     initTermDone: BOOLEAN; 
  29.     i: INTEGER;
  30.   
  31.   PROCEDURE WriteHeapNotCleanMsgs;
  32.   BEGIN
  33.     WriteString("Errors detected by AtTermDM: not all heap released:"); WriteLn;
  34.     WriteLn;
  35.     WriteString("  ptrCount     = "); WriteInt( ptrCount,    0); WriteLn;
  36.     WriteString("  handleCount  = "); WriteInt( handleCount, 0); WriteLn;
  37.     WriteString("  windowCount  = "); WriteInt( windowCount, 0); WriteLn;
  38.     WriteString("  TECount      = "); WriteInt( TECount,     0); WriteLn;
  39.     WriteString("  controlCount = "); WriteInt( controlCount,0); WriteLn;
  40.     WriteString("  menuCount    = "); WriteInt( menuCount,   0); WriteLn;
  41.     WriteString("  dialogCount  = "); WriteInt( dialogCount, 0); WriteLn;
  42.     WriteLn;
  43.     WriteString("Please report the values <> 0 shown here together with a "); 
  44.     WriteLn;
  45.     WriteString("brief description of your program (e.g. which DM modules used etc.) "); 
  46.     WriteLn;
  47.     WriteString("to the developers of the 'Dialog Machine' at ETH Zürich,  Switzerland.");
  48.     WriteLn;
  49.     WriteString("Thanks for your help and cooperation!"); WriteLn;
  50.   END WriteHeapNotCleanMsgs;
  51.  
  52.  
  53.   PROCEDURE AtTermDM;
  54.   BEGIN
  55.     IF (curDMLevel = startUpLevel) AND (
  56.       (handleCount<>0) OR (windowCount<>0) OR (TECount<>0)
  57.       OR (controlCount<>0) OR (menuCount<>0) OR (dialogCount<>0) )
  58.     THEN
  59.       (* ("Not all heap returned") *)
  60.       MessageWindow(10,40,480,300,WriteHeapNotCleanMsgs);
  61.     END;
  62.   END AtTermDM;
  63.  
  64.   
  65.   PROCEDURE DoNotShowLevels (s: ARRAY OF CHAR; i: INTEGER; size: LONGINT);
  66.   BEGIN
  67.   END DoNotShowLevels;
  68.   
  69.   PROCEDURE DummyAllocInfo(pBefore, pAfter: ADDRESS; size: LONGINT; lev: INTEGER);
  70.   BEGIN
  71.   END DummyAllocInfo;
  72.     
  73.   PROCEDURE DummyDeallocInfo(pBefore, pAfter: ADDRESS; lev: INTEGER);
  74.   BEGIN
  75.   END DummyDeallocInfo;
  76.   
  77.  
  78. BEGIN
  79.   (* debugging *) lastModuleID:= 'DMHeapWatch'; 
  80.   (* debugging *) Message("Initializing DMHeapWatch","");
  81.   ptrCount    := 0;
  82.   handleCount := 0;
  83.   windowCount := 0;  controlCount := 0;  TECount := 0;
  84.   menuCount   := 0;  dialogCount  := 0;
  85.   showLevels  := DoNotShowLevels;
  86.   debugProc   := DoNotShowLevels;
  87.   allocInfoProc   := DummyAllocInfo ;
  88.   deallocInfoProc := DummyDeallocInfo ;
  89.   InstallTermProc(AtTermDM, initTermDone);
  90.   IF NOT initTermDone THEN HALT END;
  91.   FOR i:= 0 TO maxBlocks DO
  92.     blockSizes[i] := 0D;
  93.   END(*FOR*);
  94. END DMHeapWatch .
  95.